home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib10.dsk
/
COMPARE PROGRAMS.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
4KB
|
117 lines
1 REM **************************
2 REM * COMPARE PROGRAM *
3 REM * BY *
4 REM * CHARLES G. BOODY *
5 REM * 06/01/80 *
6 REM * COMMERCIAL RIGHTS *
7 REM * RESERVED *
8 REM **************************
10 REM
20 REM ** LENGTH OF PROGRAM LINE TO BE
30 REM ** PRINTED ON A SINGLE LINE IS
40 REM ** SET BY LL IN THE STATEMENT
50 REM ** BELOW
60 LL = 50
70 TEXT : HOME : VTAB 5
80 MAXFILES = 4
90 REM
100 REM ** ENTER THE NAMES FILES TO BE
110 REM ** COMPARED--MUST BE TEXT FILES
120 REM ** CREATED BY EXEC OF CAPTURE
130 REM ** GIVE NAME OF CHANGE FILE
140 REM ** IF ONE IS TO BE CREATED
150 D$ = CHR$(4): INPUT "OLD PROGRAM TEXT FILE NAME ";O$: INPUT "NEW PROGRAM TEXT FILE NAME ";N$
160 VTAB 12: INPUT "MAKE AN EXECUTE FILE OF THE CHANGES? (1=YES, 0=NO)--PRESS RETURN ";CK%: IF CK% < >0 AND CK% < >1 THEN PRINT CHR$(7);: GOTO 160
170 IF CK% = 1 THEN INPUT "NAME THE EXEC FILE: ";C$: PRINT D$;"OPEN";C$: PRINT D$;"DELETE";C$: PRINT D$;"OPEN";C$
180 GOSUB 1080: REM PRINTER ON
190 ONERR GOTO 770
200 GOTO 450
210 REM
220 REM ** GETS A STATEMENT FROM THE
230 REM ** "OLD" FILE
240 REM
250 OS$ = "": PRINT D$;"READ ";O$
260 GET A$: IF A$ < > CHR$(13) OR LEN(OS$) = 0 THEN IF LEN(OS$) <255 THEN OS$ = OS$ +A$: GOTO 260
270 PRINT : RETURN
280 REM
290 REM ** GETS A STATEMENT FROM THE
300 REM ** "NEW" FILE
310 REM
320 NS$ = "": PRINT D$;"READ ";N$
330 GET A$: IF A$ < > CHR$(13) OR LEN(NS$) = 0 THEN IF LEN(NS$) <255 THEN NS$ = NS$ +A$: GOTO 330
340 PRINT : RETURN
350 REM
360 REM ** PRINTS A STATEMENT
370 REM ** IN LL LONG LINES
380 REM
390 II = 0
400 IO = II +1:II = II +LL: PRINT TAB( 12); MID$ (J$,IO,LL): IF II < LEN(J$) THEN 400
410 RETURN
420 REM
430 REM ** MAIN PROGRAM LOOP
440 REM
450 PRINT D$;"OPEN "O$: PRINT D$;"OPEN ";N$
460 GOSUB 250: GOSUB 320
470 REM
480 REM ** IF STATEMENT # SAME AND
490 REM ** CONTENTS SAME IGNORE
500 REM
510 OS = VAL(OS$):NS = VAL(NS$): IF VAL(OS$) = VAL(NS$) AND OS$ = NS$ THEN 460
520 REM
530 REM ** IF STATEMENT #S SAME BUT
540 REM ** CONTENTS NOT PRINT "CHANGED"
550 REM ** AND GET NEXT STATEMENT
560 REM
570 IF VAL(OS$) = VAL(NS$) AND OS$ < >NS$ THEN PRINT "CHANGED ": PRINT TAB( 5); VAL(OS$);:J$ = OS$: GOSUB 390: PRINT "TO:": PRINT TAB( 5); VAL(NS$);:J$ = NS$: GOSUB 390: GOSUB 870: GOTO 460
580 REM
590 REM ** IF OLD LINE# < NEW THEN
600 REM ** OLD LINE WAS DELETED
610 REM ** PRINT FACT AND GET NEXT
620 REM
630 IF VAL(OS$) < VAL(NS$) THEN PRINT "DELETED ": PRINT TAB( 5); VAL(OS$);:J$ = OS$: GOSUB 390: GOSUB 250: GOSUB 960: GOTO 510
640 REM
650 REM ** IF NONE OF ABOVE THEN
660 REM ** NEW LINE IS ADDED.
670 REM ** PRINT FACT AND GET NEXT.
680 REM
690 PRINT "ADDED ": PRINT TAB( 5); VAL(NS$);:J$ = NS$: GOSUB 390: GOSUB 320: GOSUB 870: GOTO 510
700 REM
710 REM ** WHEN A FILE IS EMPTY
720 REM ** DETERMINE WHICH AND
730 REM ** ALL IN REMAINING FILE
740 REM ** ARE EITHER ADDED OR
750 REM ** DELETED.
760 REM
770 X = PEEK(218) + PEEK(219) *256: POKE 216,0: ONERR GOTO 1030
780 IF X >310 THEN 800
790 PRINT "ADDED:": GOSUB 320:J$ = NS$: GOSUB 390: GOSUB 870: GOTO 790
800 IF VAL(OS$) < >NS THEN PRINT "DELETED:":J$ = OS$: GOSUB 390
810 PRINT "DELETED:": GOSUB 250:J$ = OS$: GOSUB 390: GOSUB 960: GOTO 810
820 REM
830 REM ** IF CREATING EXEC FILE
840 REM ** STORE CHANGED OR ADDED
850 REM ** LINE
860 REM
870 IF CK% = 0 THEN RETURN
880 PRINT D$;"WRITE ";C$: PRINT J$
890 PRINT
900 PRINT D$;"READ";C$: RETURN
910 REM
920 REM ** IF CREATING EXEC FILE
930 REM ** AND STATEMENT IS DELETED
940 REM ** STORE STATEMENT NUMBER
950 REM
960 IF CK% = 0 THEN RETURN
970 PRINT D$;"WRITE ";C$: PRINT VAL(J$)
980 PRINT D$;"READ";C$: RETURN
990 REM
1000 REM ** END OF BOTH FILES REACHED
1010 REM ** SO PROGRAM ENDS
1020 REM
1030 PRINT : PRINT "END OF COMPARISONS": PRINT D$;"CLOSE": GOSUB 1090
1040 END
1050 REM
1060 REM ***PRINTER ON AND OFF
1070 REM
1080 PRINT D$: PRINT D$;"PR#1": RETURN
1090 PRINT D$: PRINT D$;"PR#0": RETURN